/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.dx.rop.code;

import com.android.dx.rop.type.StdTypeList;
import com.android.dx.rop.type.Type;

/**
 * Common exception types.
 */
public final class Exceptions {

	/** {@code non-null;} the type {@code java.lang.ArithmeticException} */
	public static final Type TYPE_ArithmeticException = Type
			.intern("Ljava/lang/ArithmeticException;");

	/**
	 * {@code non-null;} the type
	 * {@code java.lang.ArrayIndexOutOfBoundsException}
	 */
	public static final Type TYPE_ArrayIndexOutOfBoundsException = Type
			.intern("Ljava/lang/ArrayIndexOutOfBoundsException;");

	/** {@code non-null;} the type {@code java.lang.ArrayStoreException} */
	public static final Type TYPE_ArrayStoreException = Type
			.intern("Ljava/lang/ArrayStoreException;");

	/** {@code non-null;} the type {@code java.lang.ClassCastException} */
	public static final Type TYPE_ClassCastException = Type
			.intern("Ljava/lang/ClassCastException;");

	/** {@code non-null;} the type {@code java.lang.Error} */
	public static final Type TYPE_Error = Type.intern("Ljava/lang/Error;");

	/**
	 * {@code non-null;} the type {@code java.lang.IllegalMonitorStateException}
	 */
	public static final Type TYPE_IllegalMonitorStateException = Type
			.intern("Ljava/lang/IllegalMonitorStateException;");

	/** {@code non-null;} the type {@code java.lang.NegativeArraySizeException} */
	public static final Type TYPE_NegativeArraySizeException = Type
			.intern("Ljava/lang/NegativeArraySizeException;");

	/** {@code non-null;} the type {@code java.lang.NullPointerException} */
	public static final Type TYPE_NullPointerException = Type
			.intern("Ljava/lang/NullPointerException;");

	/** {@code non-null;} the list {@code [java.lang.Error]} */
	public static final StdTypeList LIST_Error = StdTypeList.make(TYPE_Error);

	/**
	 * {@code non-null;} the list {@code[java.lang.Error,
	 * java.lang.ArithmeticException]}
	 */
	public static final StdTypeList LIST_Error_ArithmeticException = StdTypeList
			.make(TYPE_Error, TYPE_ArithmeticException);

	/**
	 * {@code non-null;} the list {@code[java.lang.Error,
	 * java.lang.ClassCastException]}
	 */
	public static final StdTypeList LIST_Error_ClassCastException = StdTypeList
			.make(TYPE_Error, TYPE_ClassCastException);

	/**
	 * {@code non-null;} the list {@code [java.lang.Error,
	 * java.lang.NegativeArraySizeException]}
	 */
	public static final StdTypeList LIST_Error_NegativeArraySizeException = StdTypeList
			.make(TYPE_Error, TYPE_NegativeArraySizeException);

	/**
	 * {@code non-null;} the list {@code [java.lang.Error,
	 * java.lang.NullPointerException]}
	 */
	public static final StdTypeList LIST_Error_NullPointerException = StdTypeList
			.make(TYPE_Error, TYPE_NullPointerException);

	/**
	 * {@code non-null;} the list {@code [java.lang.Error,
	 * java.lang.NullPointerException,
	 * java.lang.ArrayIndexOutOfBoundsException]}
	 */
	public static final StdTypeList LIST_Error_Null_ArrayIndexOutOfBounds = StdTypeList
			.make(TYPE_Error, TYPE_NullPointerException,
					TYPE_ArrayIndexOutOfBoundsException);

	/**
	 * {@code non-null;} the list {@code [java.lang.Error,
	 * java.lang.NullPointerException,
	 * java.lang.ArrayIndexOutOfBoundsException,
	 * java.lang.ArrayStoreException]}
	 */
	public static final StdTypeList LIST_Error_Null_ArrayIndex_ArrayStore = StdTypeList
			.make(TYPE_Error, TYPE_NullPointerException,
					TYPE_ArrayIndexOutOfBoundsException,
					TYPE_ArrayStoreException);

	/**
	 * {@code non-null;} the list {@code [java.lang.Error,
	 * java.lang.NullPointerException,
	 * java.lang.IllegalMonitorStateException]}
	 */
	public static final StdTypeList LIST_Error_Null_IllegalMonitorStateException = StdTypeList
			.make(TYPE_Error, TYPE_NullPointerException,
					TYPE_IllegalMonitorStateException);

	/**
	 * This class is uninstantiable.
	 */
	private Exceptions() {
		// This space intentionally left blank.
	}
}
